#ifndef HEADER_LISTECHAINEE
#define HEADER_LISTECHAINEE

#include <iostream>

class Iterator;

#ifndef HEADER_ITERATOR
struct noeud
{
    void * value;
    struct noeud* suivant;
};
 #endif


class ListeChainee
{

public :
    ListeChainee(int (*fonctionTri)(void * , void *)  );
    ~ListeChainee();
   // ListeChainee(*(int*)(void * , void *) fonctionTri , void * value);
    void add(void * value);
    //retourn NULL si on a rien pu supprimmer
    void * remove(void *value);
    //retourne un iterator sur la lise
    Iterator iterator();
    //retourne vrai si la liste est vide
    bool empty();
    int size();
private :
    struct noeud* debut;
    int (*tri)(void * , void *);
    int taille;
};



#endif
